home *** CD-ROM | disk | FTP | other *** search
- unit Makemiu;
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, StdCtrls,
- DirList;
-
- type
- TForm1 = class(TForm)
- GBDirectoryDets: TGroupBox;
- ListBox1: TListBox;
- BaseDirectory: TEdit;
- Label1: TLabel;
- BtnCancel: TButton;
- BtnStart: TButton;
- CBSysFile: TCheckBox;
- CBHidden: TCheckBox;
- CBReadOnly: TCheckBox;
- CBArchive: TCheckBox;
- CBDirectory: TCheckBox;
- BtnStartR1: TButton;
- BtnStartR2: TButton;
- BtnStartR3: TButton;
- procedure BtnStartClick(Sender: TObject);
- procedure BtnCancelClick(Sender: TObject);
- procedure BtnStartR1Click(Sender: TObject);
- procedure BtnStartR2Click(Sender: TObject);
- procedure BtnStartR3Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- private
- { Private declarations }
- FAborted: Boolean;
- FCallBack: TScanDirCallBack;
- {$IFDEF WIN32}
- FCallBackR1: TScanDirCallBackR1;
- FCallBackR2: TScanDirCallBackR2;
- FCallBackR3: TScanDirCallBackR3;
- {$ENDIF}
- procedure DummyDelay(ms: LongInt);
- {$IFNDEF WIN32}
- function ScanDirCallBack(CurrentFile: string; Attr: Byte): Boolean;
- {$ELSE}
- function ScanDirCallBack(CurrentFile: string; Attr: Byte): Boolean; pascal;
- function ScanDirCallBackR1(CurrentFile: string): Boolean;
- function ScanDirCallBackR2(CurrentFile: string; Attr: Byte): Boolean;
- function ScanDirCallBackR3(CurrentFile: string; Attr: Byte; Size: Integer): Boolean;
- {$ENDIF}
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- uses MakeMIC;
-
- {$R *.DFM}
- procedure TForm1.BtnStartClick(Sender: TObject);
- begin
- ListBox1.Items.Clear;
- BtnStart.Enabled := False;
- {$IFDEF WIN32}
- BtnStartR1.Enabled := False;
- BtnStartR2.Enabled := False;
- BtnStartR3.Enabled := False;
- {$ENDIF}
- FAborted := False;
- @FCallBack := MakeMethodInstance(@TForm1.ScanDirCallBack,Self);
- ScanDir(BaseDirectory.Text,FCallBack);
- FreeMethodInstance(@FCallBack);
- BtnStart.Enabled := True;
- {$IFDEF WIN32}
- BtnStartR1.Enabled := True;
- BtnStartR2.Enabled := True;
- BtnStartR3.Enabled := True;
- {$ENDIF}
- end;
-
- { This method is called from all the CallBack routines simply to give you }
- { a chance to cancel the function. }
-
- procedure TForm1.DummyDelay(ms: LongInt);
- var
- StartTicks: LongInt;
-
- begin
- StartTicks := GetTickCount;
- Repeat
- Application.ProcessMessages;
- Until GetTickCount - StartTicks > ms;
- end;
-
- {$IFNDEF WIN32}
- function TForm1.ScanDirCallBack(CurrentFile: string; Attr: Byte): Boolean;
- {$ELSE}
- function TForm1.ScanDirCallBack(CurrentFile: string; Attr: Byte): Boolean; pascal;
- {$ENDIF}
- var
- List: Boolean;
- I: longInt;
- AttribStr: string;
-
- begin
- Result := FAborted;
- if not FAborted then
- begin
- List := False;
- AttribStr := '';
- if (Attr and faReadOnly) <> 0 then
- begin
- List := CBReadOnly.Checked;
- AttribStr := AttribStr + 'r';
- end;
- if (Attr and faSysFile) <> 0 then
- begin
- List := CBSysFile.Checked or List;
- AttribStr := AttribStr + 's';
- end;
- if (Attr and faHidden) <> 0 then
- begin
- List := CBHidden.Checked or List;
- AttribStr := AttribStr + 'h';
- end;
- if (Attr and faArchive) <> 0 then
- begin
- List := CBArchive.Checked or List;
- AttribStr := AttribStr + 'a';
- end;
- if (Attr and faDirectory) <> 0 then
- begin
- List := CBDirectory.Checked or List;
- AttribStr := AttribStr + 'd';
- end;
- if List then
- ListBox1.Items.Add(CurrentFile + format(' [%s]',[AttribStr]));
- end;
- DummyDelay(25);
- end;
-
- procedure TForm1.BtnCancelClick(Sender: TObject);
- begin
- FAborted := True;
- end;
-
- procedure TForm1.BtnStartR1Click(Sender: TObject);
- begin
- {$IFDEF WIN32}
- ListBox1.Items.Clear;
- BtnStart.Enabled := False;
- BtnStartR1.Enabled := False;
- BtnStartR2.Enabled := False;
- BtnStartR3.Enabled := False;
- FAborted := False;
- @FCallBackR1 := MakeMethodInstance32Reg(@TForm1.ScanDirCallBackR1,Self,1);
- ScanDirR1(BaseDirectory.Text,FCallBackR1);
- FreeMethodInstance(@FCallBackR1);
- BtnStart.Enabled := True;
- BtnStartR1.Enabled := True;
- BtnStartR2.Enabled := True;
- BtnStartR3.Enabled := True;
- {$ENDIF}
- end;
-
- procedure TForm1.BtnStartR2Click(Sender: TObject);
- begin
- {$IFDEF WIN32}
- ListBox1.Items.Clear;
- BtnStart.Enabled := False;
- BtnStartR1.Enabled := False;
- BtnStartR2.Enabled := False;
- BtnStartR3.Enabled := False;
- FAborted := False;
- @FCallBackR2 := MakeMethodInstance32Reg(@TForm1.ScanDirCallBackR2,Self,2);
- ScanDirR2(BaseDirectory.Text,FCallBackR2);
- FreeMethodInstance(@FCallBackR2);
- BtnStart.Enabled := True;
- BtnStartR1.Enabled := True;
- BtnStartR2.Enabled := True;
- BtnStartR3.Enabled := True;
- {$ENDIF}
- end;
-
- procedure TForm1.BtnStartR3Click(Sender: TObject);
- begin
- {$IFDEF WIN32}
- ListBox1.Items.Clear;
- BtnStart.Enabled := False;
- BtnStartR1.Enabled := False;
- BtnStartR2.Enabled := False;
- BtnStartR3.Enabled := False;
- FAborted := False;
- @FCallBackR3 := MakeMethodInstance32Reg(@TForm1.ScanDirCallBackR3,Self,3);
- ScanDirR3(BaseDirectory.Text,FCallBackR3);
- FreeMethodInstance(@FCallBackR3);
- BtnStart.Enabled := True;
- BtnStartR1.Enabled := True;
- BtnStartR2.Enabled := True;
- BtnStartR3.Enabled := True;
- {$ENDIF}
- end;
-
- {$IFDEF WIN32}
- function TForm1.ScanDirCallBackR1(CurrentFile: string): Boolean;
- var
- List: Boolean;
- I: longInt;
- AttribStr: string;
-
- begin
- Result := FAborted;
- if not FAborted then
- ListBox1.Items.Add(CurrentFile);
- DummyDelay(25);
- end;
-
- function TForm1.ScanDirCallBackR2(CurrentFile: string; Attr: Byte): Boolean;
- var
- List: Boolean;
- I: longInt;
- AttribStr: string;
-
- begin
- Result := FAborted;
- if not FAborted then
- begin
- List := False;
- AttribStr := '';
- if (Attr and faReadOnly) <> 0 then
- begin
- List := CBReadOnly.Checked;
- AttribStr := AttribStr + 'r';
- end;
- if (Attr and faSysFile) <> 0 then
- begin
- List := CBSysFile.Checked or List;
- AttribStr := AttribStr + 's';
- end;
- if (Attr and faHidden) <> 0 then
- begin
- List := CBHidden.Checked or List;
- AttribStr := AttribStr + 'h';
- end;
- if (Attr and faArchive) <> 0 then
- begin
- List := CBArchive.Checked or List;
- AttribStr := AttribStr + 'a';
- end;
- if (Attr and faDirectory) <> 0 then
- begin
- List := CBDirectory.Checked or List;
- AttribStr := AttribStr + 'd';
- end;
- if List then
- ListBox1.Items.Add(CurrentFile + format(' [%s]',[AttribStr]));
- end;
- DummyDelay(25);
- end;
-
- function TForm1.ScanDirCallBackR3(CurrentFile: string; Attr: Byte; Size: Integer): Boolean;
- var
- List: Boolean;
- I: longInt;
- AttribStr: string;
-
- begin
- Result := FAborted;
- if not FAborted then
- begin
- List := False;
- AttribStr := '';
- if (Attr and faReadOnly) <> 0 then
- begin
- List := CBReadOnly.Checked;
- AttribStr := AttribStr + 'r';
- end;
- if (Attr and faSysFile) <> 0 then
- begin
- List := CBSysFile.Checked or List;
- AttribStr := AttribStr + 's';
- end;
- if (Attr and faHidden) <> 0 then
- begin
- List := CBHidden.Checked or List;
- AttribStr := AttribStr + 'h';
- end;
- if (Attr and faArchive) <> 0 then
- begin
- List := CBArchive.Checked or List;
- AttribStr := AttribStr + 'a';
- end;
- if (Attr and faDirectory) <> 0 then
- begin
- List := CBDirectory.Checked or List;
- AttribStr := AttribStr + 'd';
- end;
- if List then
- ListBox1.Items.Add(CurrentFile + format(' [%s] Size: %d',[AttribStr,Size]));
- end;
- DummyDelay(25);
- end;
- {$ENDIF}
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- {$IFNDEF WIN32}
- BtnStartR1.Visible := False;
- BtnStartR2.Visible := False;
- BtnStartR3.Visible := False;
- BtnStart.Width := 64;
- BtnStart.Left := 50;
- BtnCancel.Left := BtnCancel.Left - 80;
- BtnCancel.Width := 64;
- {$ENDIF}
- end;
-
- end.
-
-